Stack / Queue / Linked List
LIFO (Last In First Out). 목록의 끝(top)에서만 모든 접근(in/out)이 일어납니다.
데이터 추가를 push / 꺼내는것(삭제)을 pop 이라고 합니다.
스택이 비어있을 때 pop하면 stack underflow 에러가 나며, 꽉 차있을때 push를 하면 stack overflow 에러가 납니다.
스택 구조는 전통적인 Array로 구현할 수 있고, linked list를 사용해 구현할 수도 있습니다. linked list로 구현시 스택의 size를 유동적으로 만들 수 있어서 overflow 에러를 걱정하지 않아도 되는 장점이 있습니다.
자바스크립트에서의 배열은 linked list로 구현되어 있어, C언어 처럼 미리 array size를 정해 메모리 공간을 확보하는 준비가 필요하지 않습니다.
FIFO (First In First Out). 목록의 한쪽 끝(front)에서 output, 나머지 한쪽(tail)에서 input이 일어납니다.
선형(linear)과 환형(..)이 있습니다.
linked list로 큐를 구현하면 큐의 길이를 쉽게 늘릴 수 있고, 오버플로우가 발생하지 않습니다. 필요시 환형으로도 만들 수 있지만 그러지 않아도 삽입과 삭제가 제한되지 않아 편리합니다.
입력된 시간 순서대로 처리할 필요가 있는 상황에 주로 이용됩니다. (자바스크립트의 task queue)
enqueue : tail이 가리키는 위치에 저장 / dequeue : head가 가리키는 위치를 지우고 한칸씩 옮김
메서드 : 처음에 추가 / 특정노드 다음에 추가 / 특정 노드 삭제